package com.by.wx.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Map;
//ok
public class Util {

	public static final String userAgent = "Mozilla/5.0(Windows NT 6.1)AppleWebkit/537.36.....";
	
			
	public static String get(String url){
		try {
			URL urlObj = new URL(url);
			URLConnection connection = urlObj.openConnection();
			InputStream is = connection.getInputStream();
			byte [] b = new byte[1024];
			int len;
			StringBuffer sb = new StringBuffer();
			while((len=is.read(b))!=-1){
				sb.append(new String(b,0,len));
			}
			return sb.toString();
			} catch (Exception e) {
				e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 向指定的地址发送一个post请求，带着data数据
	 * @param url
	 * @param data
	 * @return
	 */
	public static String post(String url,String data) {
		try {
			URL urlObj = new URL(url);
			URLConnection connection = urlObj.openConnection();
			//要发送数据出去，必须要设置为可发送数据状态，默认为false
			connection.setDoOutput(true);
			//获取输出流
			OutputStream os = connection.getOutputStream();
			//写出数据
			os.write(data.getBytes());
			os.close();
			//获取输入流
			InputStream is = connection.getInputStream();
			byte [] b = new byte[1024];
			int len;
			StringBuffer sb = new StringBuffer();
			while((len=is.read(b))!=-1){
				sb.append(new String(b,0,len));
			}
			return sb.toString();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 
	 * @param strUrl 请求地址
	 * @param params 请求参数
	 * @param method 请求方法
	 * @return 网络请求字符串
	 * @throws IOException 
	 */
	public static String net(String strUrl,Map params,String method) throws IOException {
		HttpURLConnection conn = null;
		BufferedReader reader = null;
		String rs = null;
		try {
			StringBuffer sb = new StringBuffer();
			if (method == null || method.equals("GET")) {
				strUrl = strUrl + "?" + urlencode(params);
			}
			URL url = new URL(strUrl);
			conn = (HttpURLConnection) url.openConnection();
			if (method == null || method.equals("GET")) {
				conn.setRequestMethod("GET");
			}else {
				conn.setRequestMethod("POST");
				conn.setDoOutput(true);
			}
			conn.setRequestProperty("User-agent", userAgent);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if (reader !=null) {
				reader.close();
			}
			if (conn !=null) {
				conn.disconnect();
			}
		}
		return rs;
	}
	

	// 将map型转为请求参数型
	public static String urlencode(Map<String, Object> data) {
		StringBuilder sb = new StringBuilder();
		for (Map.Entry i : data.entrySet()) {
			try {
				sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"", "UTF-8")).append("&");
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		return sb.toString();
	}
}
